package mypackage1;

import mypackage2.Cat;

public class AnimalTest {
    public static void main(String[] args) {
        Animal animal  = new Animal();
        animal.setName("jack"); //不合法，理由：在Animal类中name是用private修饰的 是私有化的 不能直接访问
        animal.age = 3;//合法，理由：在Animal类中 age 是用default修饰的  在同一个包中都可以访问
        animal.weight = 3;//合法，理由：在Animal类中 weight是用protected修饰的 同个包也是可以直接访问的
        Cat cat = new Cat();
        cat.weight = 2.5f;//合法，理由：在Animal类中 weight是用protected修饰的 Cat类和Animal类虽然不同包 但是Cat继承了Animal 可以访问
        cat.eat(); //不合法，理由：Cat类用protected修饰符重写了父类中的eat方法 不同包的非子类 不能直接调用  应该把重写方法的修饰符改为public
        cat.sleep();//不合法，理由：  Cat类中重写sleep的方法用的修饰符错误  权限范围小于父类的 不能 在不同包中访问 应该改成public去修饰
        cat.legs = 4;//合法，理由：legs 成员变量是用public修饰的  而Cat类是继承了Animal类  可以直接访问
        cat.age = 1;//不合法，理由： age是用default修饰的成员变量 Cat类和Animal类不同包  不能直接访问
        cat.f();//合法，理由： Cat类中用public修饰f()成员方法 可以直接访问
        Mouse mouse = new Mouse();
        mouse.age = 2;//合法，理由：  Mouse类继承了Animal类  而且age是default修饰的  同一个包可以直接访问
        mouse.breathe();//合法，理由：  Mouse类继承了Animal类 Mouse类重写了 父类的方法  且用default修饰的 所以同一包中可以直接访问
        mouse.setColor("白色");//不合法，理由：Mouse类中的color成员变量是private修饰的 是私有化的  不能直接访问
        mouse.sleep();//合法，理由： 因为Mouse类是继承Animal类的  且sleep（）成员方法是用public修饰的 可以直接访问
    }
}
